---
title: clsAppeal
summary: Represents an appeal filed against a legal case outcome, along with its extensions.
status: draft
owner: SAIF Case Management team
last_reviewed: 2026-08-21
library: SAIF.Business.Claim.Legal
reference_type: embedded
---

# clsAppeal

Represents an appeal filed against a legal case outcome, along with its extensions.

| Field | Value |
|---|---|
| **Base class** | `clsBusinessBase` (`SAIF.Framework.Core`)† |
| **Source file** | `SAIF.Business.Claim.Legal\LegalNet\clsAppeal.vb` |

## Public members

### Properties

| Member | Signature | Purpose |
|---|---|---|
| `AppealID` | `ReadOnly Property AppealID() As Decimal` | Identifies the appeal record; assigned from `APPEAL_SEQ` on creation. |
| `LegalCaseID` | `ReadOnly Property LegalCaseID() As Decimal` | Identifies the legal case the appeal belongs to. |
| `ReviewLevelCode` | `Property ReviewLevelCode() As String` | Code of the review level (e.g. `WCBA`, `COA`, `SCRT`) hearing the appeal; drives brief due-date scheduling.* |
| `ReviewLevel` | `ReadOnly Property ReviewLevel As String` | Resolves `ReviewLevelCode` to its descriptive code-table label.* |
| `PetitionerRespondentCode` | `Property PetitionerRespondentCode() As String` | Code indicating whether SAIF is petitioner or respondent in the appeal.* |
| `PetitionerRespondent` | `ReadOnly Property PetitionerRespondent As String` | Resolves `PetitionerRespondentCode` to its descriptive code-table label.* |
| `IsApproved` | `Property IsApproved() As Boolean` | Flags whether the appeal has been approved. |
| `ReviewDueDate` | `Property ReviewDueDate() As Date` | Due date for the review filing. |
| `ReviewFiledDate` | `Property ReviewFiledDate() As Date` | Date the review was actually filed; validated to fall between 1/1/1983 and one year from today via `Rule_ValidReviewDate`. |
| `AttorneyEmployeeID` | `Property AttorneyEmployeeID() As String` | Employee ID of the attorney assigned to the appeal. |
| `Brief1DueDate` | `Property Brief1DueDate() As Date` | Due date for the appellant's (first) brief; setting it cascades to compute `Brief2DueDate`/`Brief3DueDate` based on the review level's brief-day windows.* |
| `Brief1FiledDate` | `Property Brief1FiledDate() As Date` | Date the appellant's brief was filed; cascades to recompute later brief due dates.* |
| `Brief2DueDate` | `Property Brief2DueDate() As Date` | Due date for the respondent's (second) brief; cascades to `Brief3DueDate` when applicable.* |
| `Brief2FiledDate` | `Property Brief2FiledDate() As Date` | Date the respondent's brief was filed; cascades to recompute `Brief3DueDate`.* |
| `Brief3DueDate` | `Property Brief3DueDate() As Date` | Due date for the reply (third) brief. |
| `Brief3FiledDate` | `Property Brief3FiledDate() As Date` | Date the reply brief was filed. |
| `AppealNumber` | `Property AppealNumber() As String` | Appeal number/reference code; must start with `A` or `S` and be 5–7 characters per `Rule_ValidAppealNum`. |
| `ScheduleID` | `Property ScheduleID() As Decimal` | Identifier of the hearing/schedule entry this appeal is linked to, used to associate the appeal with the docketed hearing it originated from. |
| `CreateDate` | `ReadOnly Property CreateDate() As Date` | Date the appeal record was created. |
| `CreateUser` | `ReadOnly Property CreateUser() As String` | User ID that created the appeal record. |
| `UpdateDate` | `ReadOnly Property UpdateDate() As Date` | Date the appeal record was last updated. |
| `UpdateUser` | `ReadOnly Property UpdateUser() As String` | User ID that last updated the appeal record. |
| `CanHaveExtensions` | `ReadOnly Property CanHaveExtensions As Boolean` | Indicates whether the appeal's review level allows brief extensions (`False` for `WCBA`).* |
| `Extensions` | `ReadOnly Property Extensions As clsBusinessCollection(Of clsAppealExtension)` | Lazily loads and returns the collection of brief extensions requested against this appeal. |
| `IsValid` | `Overrides ReadOnly Property IsValid() As Boolean` | Extends the base validity check to also validate the `Extensions` child collection when dirty. Overrides `clsBusinessBase.IsValid`. |
| `IsDirty` | `Overrides ReadOnly Property IsDirty() As Boolean` | Extends the base dirty check to report dirty when the `Extensions` child collection has pending changes. Overrides `clsBusinessBase.IsDirty`. |

### Methods

| Member | Signature | Purpose |
|---|---|---|
| `AddExtension` | `Sub AddExtension()` | Creates and adds a new `clsAppealExtension` (next `APPEAL_EXTENSION_SEQ`) to the `Extensions` collection. |
| `CreateExtension` | `Function CreateExtension() As clsAppealExtension` | Creates a transient, unsaved `clsAppealExtension` instance for UI binding purposes.* |
| `SetReviewDueDateNull` | `Sub SetReviewDueDateNull()` | Clears `ReviewDueDate` and marks the appeal dirty. |
| `SetReviewFiledDateNull` | `Sub SetReviewFiledDateNull()` | Clears `ReviewFiledDate` and marks the appeal dirty. |
| `SetAttorneyEmployeeIDNull` | `Sub SetAttorneyEmployeeIDNull()` | Clears `AttorneyEmployeeID` and marks the appeal dirty. |
| `SetBrief1DueDateNull` | `Sub SetBrief1DueDateNull()` | Clears `Brief1DueDate` and marks the appeal dirty. |
| `SetBrief1FiledDateNull` | `Sub SetBrief1FiledDateNull()` | Clears `Brief1FiledDate` and marks the appeal dirty. |
| `SetBrief2DueDateNull` | `Sub SetBrief2DueDateNull()` | Clears `Brief2DueDate` and marks the appeal dirty. |
| `SetBrief2FiledDateNull` | `Sub SetBrief2FiledDateNull()` | Clears `Brief2FiledDate` and marks the appeal dirty. |
| `SetBrief3DueDateNull` | `Sub SetBrief3DueDateNull()` | Clears `Brief3DueDate` and marks the appeal dirty. |
| `SetBrief3FiledDateNull` | `Sub SetBrief3FiledDateNull()` | Clears `Brief3FiledDate` and marks the appeal dirty. |
| `SetAppealNumberNull` | `Sub SetAppealNumberNull()` | Clears `AppealNumber` and marks the appeal dirty. |
| `SetScheduleIDNull` | `Sub SetScheduleIDNull()` | Clears `ScheduleID` and marks the appeal dirty. |
| `IsReviewDueDateNull` | `Function IsReviewDueDateNull() As Boolean` | Indicates whether `ReviewDueDate` is unset. |
| `IsReviewFiledDateNull` | `Function IsReviewFiledDateNull() As Boolean` | Indicates whether `ReviewFiledDate` is unset. |
| `IsAttorneyEmployeeIDNull` | `Function IsAttorneyEmployeeIDNull() As Boolean` | Indicates whether `AttorneyEmployeeID` is unset. |
| `IsBrief1DueDateNull` | `Function IsBrief1DueDateNull() As Boolean` | Indicates whether `Brief1DueDate` is unset. |
| `IsBrief1FiledDateNull` | `Function IsBrief1FiledDateNull() As Boolean` | Indicates whether `Brief1FiledDate` is unset. |
| `IsBrief2DueDateNull` | `Function IsBrief2DueDateNull() As Boolean` | Indicates whether `Brief2DueDate` is unset. |
| `IsBrief2FiledDateNull` | `Function IsBrief2FiledDateNull() As Boolean` | Indicates whether `Brief2FiledDate` is unset. |
| `IsBrief3DueDateNull` | `Function IsBrief3DueDateNull() As Boolean` | Indicates whether `Brief3DueDate` is unset. |
| `IsBrief3FiledDateNull` | `Function IsBrief3FiledDateNull() As Boolean` | Indicates whether `Brief3FiledDate` is unset. |
| `IsAppealNumberNull` | `Function IsAppealNumberNull() As Boolean` | Indicates whether `AppealNumber` is unset. |
| `IsScheduleIDNull` | `Function IsScheduleIDNull() As Boolean` | Indicates whether `ScheduleID` is unset. |
| `Equals(objA, objB)` | `Overloads Shared Function Equals(objA As Object, objB As Object) As Boolean` | Compares two objects for equality when both are `clsAppeal` instances. |
| `Equals(inObject)` | `Overloads Overrides Function Equals(inObject As Object) As Boolean` | Compares this instance against another object, delegating to the typed overload when applicable. |
| `Equals(inObject As clsAppeal)` | `Overloads Function Equals(inObject As clsAppeal) As Boolean` | Compares two `clsAppeal` instances by `AppealID`. |
| `GetHashCode` | `Overrides Function GetHashCode() As Integer` | Returns the hash code derived from `AppealID`. |
| `ToString` | `Overrides Function ToString() As String` | Returns the string representation of `AppealID`. |
| `NewAppeal` (shared) | `Shared Function NewAppeal(inDataportal As IDataPortalInfo, inLegalCaseID As Decimal) As clsAppeal` | Factory that creates a new, unsaved `clsAppeal` for the given legal case. |
| `GetAppeal` (shared) | `Shared Function GetAppeal(inDataportal As IDataPortalInfo, inAppealID As Decimal) As clsAppeal` | Factory that retrieves an existing `clsAppeal` by ID via `pk80001_legalnet.getAppeal`. |

### Constructors

| Member | Signature | Purpose |
|---|---|---|
| `New` | `Protected Friend Sub New()` | Framework-invoked constructor that registers business rules; instances are created through the `NewAppeal`/`GetAppeal` factory methods rather than directly. |

## Inherited public members

The following members are inherited from `clsBusinessBase` (`SAIF.Framework.Core`) and are not re-declared in this class:

| Member | Kind | Description |
|---|---|---|
| `Save` | Method | Dispatches to the correct `IBusinessCriteria` CRUD SQL based on object state.† |
| `AddBusinessRules` | Method | Registers this class's business rules with the framework rule engine.† |

## Related SQL

- [DB-CLL-009](../../sql/SQL-009-appeal.md)
- [DB-CLL-010](../../sql/SQL-010-appeal.md)
- [DB-CLL-011](../../sql/SQL-011-appeal.md)
- [DB-CLL-012](../../sql/SQL-012-appeal.md)

## Related operations

- [Manage appeals and appeal extensions](../../operations/manage-appeal.md)

> **Note:** Statements marked with † are derived from dependency library
> documentation via the Legends CLI. Statements marked with `*` were inferred
> from code structure or contextual evidence. Statements marked with `**` could
> not be confirmed; treat as unknown until verified.

## Sources

- `SAIF.Business.Claim.Legal\LegalNet\clsAppeal.vb`